Field of the Invention
Embodiments of the present invention generally relate to inverse transformation using pruning in video coding.
Description of the Related Art
Video compression, i.e., video coding, is an essential enabler for digital video products as it enables the storage and transmission of digital video. In general, video compression techniques apply prediction, transformation, quantization, and entropy coding to sequential blocks of pixels in a video sequence to compress, i.e., encode, the video sequence. Video decompression techniques generally perform the inverse of these operations in reverse order to decompress, i.e., decode, a compressed video sequence.
Two dimensional (2D) block transforms, e.g., 2D discrete cosine transforms (DCT), and variants are used in video coding to reduce spatial redundancy and achieve compression. Accordingly, 2D inverse transforms, e.g., 2D inverse DCT (IDCT) are performed in video decoding as part of decompressing encoded video. A 2D IDCT is a separable transform that may be split into row and column one-dimensional (1D) IDCTs for application. The video coding standard in use typically defines the order in which the row and column IDCTs are applied so that an encoded video bit stream is decoded identically in all compliant decoders. For example, in the H.264/AVC video coding standard, the row inverse transform is applied first followed by the column inverse transform.
The high frequency region in transform blocks is typically zero due to quantization and the energy compaction properties of the transform. The knowledge that a large portion of a transform block may be zero is exploited for IDCT pruning, also referred to as partial inverse transformation, to reduce the computational complexity of an IDCT. In IDCT pruning, many 2D IDCT computations that have zero input and zero output, i.e., computations corresponding to a region having only zero values, may be eliminated to reduce computational complexity. IDCT pruning is a well known technique that is supported by existing video coding standards that use a zigzag scan pattern to scan coefficients in a transform block.